package apis

import (
	"gitee.com/sansaniot/ssiot-core/httpmvc/api"
	"github.com/gin-gonic/gin"

	"ssdevice/internal/device/models"
	"ssdevice/internal/device/models/query"
	"ssdevice/internal/device/service"
)

type Profile struct {
	api.Api
}

// 查询profile
func (e Profile) FindProfile(c *gin.Context) {
	// 请求参数
	req := query.SysDevProfileQuery{}
	// 业务service
	s := &service.Device{}
	// 模型
	dev := &models.SysDev{}
	devConfig := &models.SysDevConfig{}
	devSensor := &models.SysDevSensor{}
	devSystem := &models.SysDevSystem{}
	devProduct := &models.SysDevProduct{}
	// 上下文
	err := e.MakeContext(c).
		Bind(&req).
		MakeModel(&dev.Model,
			&devConfig.Model,
			&devSensor.Model,
			&devSystem.Model,
			&devProduct.Model,
		).Errors
	if err != nil {
		e.Logger.Error(err)
		e.Fail(0, err.Error())
		return
	}
	// service注入实体
	s.SetDevModel(dev).
		SetConfigModel(devConfig).
		SetSensorModel(devSensor).
		SetSystemModel(devSystem).
		SetProductModel(devProduct)
	// 执行
	var result interface{}
	if err, result = s.FindDevProfile(&req); err != nil {
		e.Logger.Error(err)
		e.Fail(0, err.Error())
		return
	}
	// 返回
	e.Ok(result)
}
